// 导入数据库操作模块
const db = require('../../db/index.js');
// 加密用户密码
const bcrypt = require('bcryptjs');
// 导入生成token包
const jwt = require('jsonwebtoken');
// 导入全局的配置文件
const config = require('../../config.js');
// 注册处理函数
exports.regUser = function(req,res) {
    const {body} = req;
    if(!body.username || !body.password)return res._text('用户名或密码不合法');
    const sqlStr = 'SELECT * FROM ev_users WHERE username=?';
    db.query(sqlStr,body.username,(err,results) => {
        if(err)return res._text(err);
        if(results.length > 0)return res._text('用户名被占用请更换其他用户名');
        // 用户名可用 加密用户密码 增强安全性
        body.password = bcrypt.hashSync(body.password,10);
        // 定义插入新用户
        const sql = 'INSERT INTO ev_users SET?';
        db.query(sql,{username: body.username,password: body.password},(err,results) => {
            if(err)return res._text(err);
            // 判断影响行数是否为 1
            if(results.affectedRows !== 1)return res._text('注册用户失败,请稍后重试');
            // 注册用户成功
            return res._text('注册用户成功',0);
        });
    });
};
// 登录处理函数
exports.login = function(req,res) {
    // 接受表单的数据
    const {body} = req;
    const sqlStr = 'SELECT * FROM ev_users WHERE username=?';
    db.query(sqlStr,body.username,(err,results) => {
        if(err)return res._text(err);
        if(results.length !== 1)return res._text('用户未注册');
        // 判断密码是否正确
        const compareResult = bcrypt.compareSync(body.password,results[0].password);
        if(!compareResult)return res._text('账号或密码错误');
        const user = {...results[0],password: null,user_pic: null};
        // 对用户的信息进行加密生成token字符串
        const tokenStr = jwt.sign(user,config.jwtSecretKet,{ expiresIn: config.expiresIn });
        res.send({
            code: 200, 
            status: 0,
            message: '登录成功',
            token:'Bearer ' + tokenStr
        });
    });
    
};